package com.base.andlanggl.util

import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.opengl.GLES20.*
import android.opengl.GLUtils
import com.base.andlangcore.util.LogUtils

//纹理工具
class TextureHelper {
    companion object{
        fun loadTexture(context: Context,resource:Int):Int{
            val textureObjectIds:IntArray= IntArray(1)
            glGenTextures(1,textureObjectIds,0) //创建纹理对象
            if(textureObjectIds[0]==0){
                LogUtils.e("Could not generate a new OpenGL texture object.")
                return 0
            }
            //加载图片
            val options:BitmapFactory.Options=BitmapFactory.Options()
            options.inScaled=false //使用原始图像数据
            val bitmap:Bitmap=BitmapFactory.decodeResource(context.resources,resource,options)
            glBindTexture(GL_TEXTURE_2D,textureObjectIds[0])//应用纹理 采用二维纹理
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)//纹理过滤器 图片缩小时采用三线性过滤
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) //纹理过滤器 图片放大采用双线性过滤
            GLUtils.texImage2D(GL_TEXTURE_2D,0,bitmap,0)//加载位图数据到openGL中
            bitmap.recycle()//图片回收
            glGenerateMipmap(GL_TEXTURE_2D)//openGL生成所有必要的级别
            glBindTexture(GL_TEXTURE_2D,0)//解绑纹理

            return textureObjectIds[0]
        }
    }
}